package 栈和队列;

import java.util.Stack;

public class LC_020有效的括号 {
    public static void main(String[] args){
        String s="([{}])()()))";
        System.out.println(isValid(s));
    }
    public static boolean isValid(String s) {
        Stack<Character> st=new Stack<>();
        char[] c=s.toCharArray();
        if(c.length%2!=0) return false;
        for(int i=0;i<c.length;i++){
            if(c[i]=='(') st.push(')');
            else if(c[i]=='[') st.push(']');
            else if(c[i]=='{') st.push('}');
            //判断栈是否为空||栈顶元素是否与此时元素相等
            else if(st.empty() || st.peek()!=c[i])
                return false;
            else
                 st.pop();//匹配出栈
        }
        return st.empty();
    }
}
